Convolution is a fundamental operation in many applications, such as computervision, natural language processing, image processing, etc. Recent successes ofconvolutional neural networks in various deep learning applications put evenhigher demand on fast convolution. The high computation throughput and memorybandwidth of graphics processing units (GPUs) make GPUs a natural choice foraccelerating convolution operations. However, maximally exploiting theavailable memory bandwidth of GPUs for convolution is a challenging task. Thispaper introduces a general model to address the mismatch between the memorybank width of GPUs and computation data width of threads. Based on this model,we develop two convolution kernels, one for the general case and the other fora special case with one input channel. By carefully optimizing memory accesspatterns and computation patterns, we design a communication-optimized kernelfor the special case and a communication-reduced kernel for the general case.Experimental data based on implementations on Kepler GPUs show that our kernelsachieve 5.16X and 35.5% average performance improvement over the latest cuDNNlibrary, for the special case and the general case, respectively.
展开▼